﻿using System.Xml;
using System.Xml.Serialization;

namespace Bpmn.Xml;

/// <remarks/>
[XmlInclude(typeof(Relationship))]
[XmlInclude(typeof(ResourceParameter))]
[XmlInclude(typeof(Operation))]
[XmlInclude(typeof(CorrelationPropertyRetrievalExpression))]
[XmlInclude(typeof(ConversationLink))]
[XmlInclude(typeof(MessageFlowAssociation))]
[XmlInclude(typeof(ConversationAssociation))]
[XmlInclude(typeof(ConversationNode))]
[XmlInclude(typeof(SubConversation))]
[XmlInclude(typeof(Conversation))]
[XmlInclude(typeof(CallConversation))]
[XmlInclude(typeof(MessageFlow))]
[XmlInclude(typeof(ParticipantMultiplicity))]
[XmlInclude(typeof(Participant))]
[XmlInclude(typeof(CorrelationPropertyBinding))]
[XmlInclude(typeof(CorrelationSubscription))]
[XmlInclude(typeof(ParticipantAssociation))]
[XmlInclude(typeof(CorrelationKey))]
[XmlInclude(typeof(Rendering))]
[XmlInclude(typeof(InputOutputBinding))]
[XmlInclude(typeof(RootElement))]
[XmlInclude(typeof(Signal))]
[XmlInclude(typeof(Resource))]
[XmlInclude(typeof(PartnerRole))]
[XmlInclude(typeof(PartnerEntity))]
[XmlInclude(typeof(Message))]
[XmlInclude(typeof(ItemDefinition))]
[XmlInclude(typeof(Interface))]
[XmlInclude(typeof(Escalation))]
[XmlInclude(typeof(Error))]
[XmlInclude(typeof(EndPoint))]
[XmlInclude(typeof(DataStore))]
[XmlInclude(typeof(CorrelationProperty))]
[XmlInclude(typeof(Collaboration))]
[XmlInclude(typeof(GlobalConversation))]
[XmlInclude(typeof(Choreography))]
[XmlInclude(typeof(GlobalChoreographyTask))]
[XmlInclude(typeof(Category))]
[XmlInclude(typeof(EventDefinition))]
[XmlInclude(typeof(TimerEventDefinition))]
[XmlInclude(typeof(TerminateEventDefinition))]
[XmlInclude(typeof(SignalEventDefinition))]
[XmlInclude(typeof(MessageEventDefinition))]
[XmlInclude(typeof(LinkEventDefinition))]
[XmlInclude(typeof(EscalationEventDefinition))]
[XmlInclude(typeof(ErrorEventDefinition))]
[XmlInclude(typeof(ConditionalEventDefinition))]
[XmlInclude(typeof(CompensateEventDefinition))]
[XmlInclude(typeof(CancelEventDefinition))]
[XmlInclude(typeof(CallableElement))]
[XmlInclude(typeof(Process))]
[XmlInclude(typeof(GlobalTask))]
[XmlInclude(typeof(GlobalUserTask))]
[XmlInclude(typeof(GlobalScriptTask))]
[XmlInclude(typeof(GlobalManualTask))]
[XmlInclude(typeof(GlobalBusinessRuleTask))]
[XmlInclude(typeof(Lane))]
[XmlInclude(typeof(LaneSet))]
[XmlInclude(typeof(LoopCharacteristics))]
[XmlInclude(typeof(StandardLoopCharacteristics))]
[XmlInclude(typeof(MultiInstanceLoopCharacteristics))]
[XmlInclude(typeof(ResourceAssignmentExpression))]
[XmlInclude(typeof(ResourceParameterBinding))]
[XmlInclude(typeof(ResourceRole))]
[XmlInclude(typeof(Performer))]
[XmlInclude(typeof(HumanPerformer))]
[XmlInclude(typeof(PotentialOwner))]
[XmlInclude(typeof(DataAssociation))]
[XmlInclude(typeof(DataOutputAssociation))]
[XmlInclude(typeof(DataInputAssociation))]
[XmlInclude(typeof(Property))]
[XmlInclude(typeof(OutputSet))]
[XmlInclude(typeof(InputSet))]
[XmlInclude(typeof(DataOutput))]
[XmlInclude(typeof(DataInput))]
[XmlInclude(typeof(InputOutputSpecification))]
[XmlInclude(typeof(DataState))]
[XmlInclude(typeof(Monitoring))]
[XmlInclude(typeof(FlowElement))]
[XmlInclude(typeof(SequenceFlow))]
[XmlInclude(typeof(FlowNode))]
[XmlInclude(typeof(Gateway))]
[XmlInclude(typeof(ParallelGateway))]
[XmlInclude(typeof(InclusiveGateway))]
[XmlInclude(typeof(ExclusiveGateway))]
[XmlInclude(typeof(EventBasedGateway))]
[XmlInclude(typeof(ComplexGateway))]
[XmlInclude(typeof(ChoreographyActivity))]
[XmlInclude(typeof(SubChoreography))]
[XmlInclude(typeof(ChoreographyTask))]
[XmlInclude(typeof(CallChoreography))]
[XmlInclude(typeof(Event))]
[XmlInclude(typeof(ThrowEvent))]
[XmlInclude(typeof(IntermediateThrowEvent))]
[XmlInclude(typeof(ImplicitThrowEvent))]
[XmlInclude(typeof(EndEvent))]
[XmlInclude(typeof(CatchEvent))]
[XmlInclude(typeof(StartEvent))]
[XmlInclude(typeof(IntermediateCatchEvent))]
[XmlInclude(typeof(BoundaryEvent))]
[XmlInclude(typeof(Activity))]
[XmlInclude(typeof(Task))]
[XmlInclude(typeof(UserTask))]
[XmlInclude(typeof(ServiceTask))]
[XmlInclude(typeof(SendTask))]
[XmlInclude(typeof(ScriptTask))]
[XmlInclude(typeof(ReceiveTask))]
[XmlInclude(typeof(ManualTask))]
[XmlInclude(typeof(BusinessRuleTask))]
[XmlInclude(typeof(SubProcess))]
[XmlInclude(typeof(Transaction))]
[XmlInclude(typeof(AdHocSubProcess))]
[XmlInclude(typeof(CallActivity))]
[XmlInclude(typeof(DataStoreReference))]
[XmlInclude(typeof(DataObjectReference))]
[XmlInclude(typeof(DataObject))]
[XmlInclude(typeof(ComplexBehaviorDefinition))]
[XmlInclude(typeof(CategoryValue))]
[XmlInclude(typeof(Auditing))]
[XmlInclude(typeof(Assignment))]
[XmlInclude(typeof(Artifact))]
[XmlInclude(typeof(TextAnnotation))]
[XmlInclude(typeof(Group))]
[XmlInclude(typeof(Association))]
[Serializable]
[XmlType(Namespace = "http://www.omg.org/spec/BPMN/20100524/MODEL", TypeName = "tBaseElement")]
[XmlRoot("baseElement", Namespace = "http://www.omg.org/spec/BPMN/20100524/MODEL", IsNullable = false)]
public abstract partial class BaseElement
{
    /// <remarks/>
    [XmlElement("documentation")]
    public Documentation[] Documentation { get; set; } = default!;

    /// <remarks/>
    [XmlElement("extensionElements")]
    public ExtensionElements ExtensionElements { get; set; } = default!;

    /// <remarks/>
    [XmlAttribute("id", DataType = "ID")]
    public string Id { get; set; } = default!;

    /// <remarks/>
    [XmlAnyAttribute]
    public XmlAttribute[] AnyAttr { get; set; } = default!;
}
